<?php

/**
 * Empêche de redéclarer une constante
 *
 * @param string $name Le nom de la constante
 * @param mixed $name Le valeur donnée à la constante
 */
function define_once($name, $value)
{
	if (!defined($name)) {
		define($name, $value);
	}
}

/**
 * Encodage en md5 ou sha1 avec un grain de sel
 *
 * @param string $string The string to encode
 * @param string $method The method to use
 */
function selEncode($string, $method = 'md5')
{
    $salted_string = $string . GRAIN_SEL;
    
	switch ($method) {
		case 'md5':	    return md5($salted_string);
		case 'sha1':	return sha1($salted_string);
		case 'base64':	return base64_encode($salted_string);
		
		default: throw new InvalidArgumentException(
            sprintf('The value %s does not match a method for encoding.', $method)
        );
	}
}

/**
 * Décodage de la chaîne cryptée
 *
 * @param string $string The string to encode
 * @param string $method The method to use
 */
function selDecode($string, $method = 'base64')
{
	switch ($method) {
		case 'base64' :
			$tmp = base64_decode($string);
			$tmp2 = explode(GRAIN_SEL, $tmp);
			return $tmp2[0];
		
		default: throw new InvalidArgumentException(
            sprintf('The value %s does not match a method for encoding.', $method)
        );
	}
}


/* -- Fin du fichier -- */